Loading...
2024. 4. 7. 03:02

closed book question answering 개념 이해하기

1. MRC와 ODQA는 무슨차이인가 MRC는 문서가 주어지고 그에 대한 질문이 함께 주어지면 모델이 문서를 읽고 질문에 대한 답을 내는 방식 ODQA는 문서가 주어지지 않았는데 질문이 주어지면 질문과 관련된 문서를 찾고 그 문서로부터 모델이 질문에 대한 답을 내는 방식 2. open domain vs. open book vs. closed book open domain은 질문이 주어질 때 관련된 문서를 찾아 읽고 질문에 답을 내는 task 자체를 나타냄 open book은 질문을 던졌을 때 모델이 질문에 답하기 위해 ‘책’이라고 할 수 있는 거대한 corpus를 접근하게 하는것 closed book은 corpus없이 질문을 받으면 모델이 가지고 있는 사전지식만을 활용하여 정답을 냄 3. core ide..

2024. 3. 30. 00:11

Open domain question answering에서 고민해야할 issue

1. passage의 단위? 앞에서 passage의 엄밀한 정의를 하지 않았는데 위키피디아 같은 경우도 passage를 어떻게 볼지 엄밀하게 정의하지 않았다 영어 위키피디아에서 article로 보면 500만개 정도 있고 paragraph로 보면 3000만개 정도 있고 sentence로 보면 7600만개 정도 있다고 한다 retriever가 reader한테 질문과 관련된 passage를 넘겨줄 때 몇개를 넘겨줘야 적당한가? passage를 정의한 범위에 따라서도 몇개를 넘겨줄지 고려해야함 몇개의 passage를 넘겨주느냐에 따라 모형의 성능도 다르다 위와 같이 큰 단위일수록 적게 넘겨줌 위는 article일때 k=5, paragraph는 k=29, sentence는 k=78로 그냥 설정해보고 실험한 논문 ..

2024. 3. 30. 00:00

retriever-reader 방식을 이용한 Open domain question answering 문제 접근 방법

1. motivation 가장 일반적인 ODQA의 해결방법 retriever model과 reader model을 그대로 연결하여 ODQA를 해결 retriever가 대형 문서셋 corpus와 질문을 input으로 받으면 질문과 관련성이 높은 지문 문서를 출력함 retrieve된 지문을 받은 reader는 질문과 함께 input으로 받으면 최종 답안을 출력해줌 2. training 2-1) retriever TF-IDF와 BM25활용한 embedding은 label을 통한 일반적인 training없음 self-supervise training이라는데 기본적으로 생각하는 training이라고 보기는 솔직히 좀 어렵다 dense embedding은 가지고 있는 MRC set을 이용하여 training을 통해..

2024. 3. 29. 23:48

Open domain question answering 개요

1. MRC와 ODQA의 차이 MRC는 지문이 주어진 상황에서 주어진 지문에 대한 질문에 대답하는 문제 반면 ODQA는 지문이 특정해서 주어지는 상황은 아니다. 방대한 world knowledge로 위키피디아나 웹 전체같은 대용량의 지문 데이터 베이스에서 질문에 답을 하는 문제 open domain question answering은 방대한 지문 데이터베이스를 가진 machine에 어떤 질문을 하여 답을 내주길 원하는 문제 결정적인 차이는 MRC는 단 하나의 지문(상대적으로 적은 지문)을 보고 그 지문에 대한 질문의 답을 하는데 ODQA는 똑같은 형태로 질문을 하더라도 machine이 지문 하나를 보는 것이 아니라 방대한 지문을 보면서 그 속에서 답을 찾아야함 영어 위키피디아만 해도 약 300만개라고함 ..

2024. 3. 21. 23:20

passage의 indexing을 도와주는 FAISS 라이브러리 소개

1. introduction facebook에서 만든 fast approximation open source library 효과적인 similarity search와 dense vector의 clustering을 지원함 사용이 편하고 어떤 size에도 가능하지만 large scale에 특화되어 있다고함 C++가 backbone이지만 python으로 wrapping되어 있어서 python으로도 쉽게 사용가능 passage vector의 indexing과정을 도와준다고함 2. 사용방법 train data로 passage vector를 준비하고 index train을 해야함 단순히 random하게 clustering을 하는 것이 아니라 데이터의 분포를 보고 적절하게 clustering을 해야함 이런 적절한 c..

2024. 3. 21. 02:45

query와 passage의 similarity search를 근사(approximation)시키는 법

1. scalar quantization 벡터를 압축하여 하나의 벡터가 원래보다 더 적은 용량을 차지하도록 compression하는 기술 당연하지만 압축량이 커질수록 요구되는 메모리공간은 작아지지만 그만큼 정보손실도 커진다 일반적으로 벡터 내 수치는 float32로 저장함 SQ8은 4byte float32를 1byte int8이나 float8???로 저장하는 방식(quantization이면 int8이 더 어울리긴해) 그러면서 한 값의 저장용량을 1/4로 줄인다 강의에서는 4byte float32를 1byte unsigned int8로 압축한다고 나와있네 각 수치가 4byte에서 1byte로 줄어들면서 크기가 줄어든것을 볼수 있음 보통 inner product에서 float32까지 필요한 경우는 많지 않아..